
#pragma once

#include <SFML/Graphics.hpp>
#include <vector>
#include <iostream>


class DisplayManager
{
	public:

		void Initialize();
		void Cleanup();
		void Draw();

		static DisplayManager* GetInstance();
		void Destroy();
		sf::RenderWindow* GetRenderWindow();

		void AddDrawable(sf::Drawable* p_Sprite, unsigned int p_DrawPriority); // 0 is the lowest - higher number higher priority
		void DeleteDrawable(sf::Drawable* s_Drawable);

		struct Drawables
		{
			sf::Drawable* m_xSprite;
			int m_iDrawOrder;
		};

	private:

		std::vector<Drawables> m_xDrawable;
		sf::RenderWindow* m_xWindow;

		static DisplayManager* m_xInstance;

		DisplayManager();
		~DisplayManager();
};